import str from '@/util/str.js'

// 记录来源参数
var ref_query = '';

// 获取启动参数并写入缓存
function init() {
	let options = wx.getEnterOptionsSync();
	switch (options.scene) {
		case 1011:
			// 扫描二维码
			enterByScanQrcode(options)
		case 1012:
			// 长按识别
		case 1013:
			// 选择相册图片识别
			enterByScanQrcode(options);
			break;
		case 1007:
		case 1008:
			// todo 其它卡片
			enterByShareMessage(options)
			break;

		default:
			// todo  不知道的一律跳首页
	}
}
// 通过识别二维码方式进入
function enterByScanQrcode(options) {
	
	// q是识别普通二维码的参数，小程序二维码不是
	let q = str.get(options.query, 'q', '');
	if (!q) {
		// 默认跳转到首页
		uni.switchTab({
			url: '/pages/index/index'
		})
		return;
	}
	// 解码
	let url = decodeURIComponent(q)
	let urlObj = str.parseURL(url);
	// 跳转路径,默认是首页
	let go = '/pages/index/index';
	let query = {};
	// ref_query = urlObj.query
	ref_query = url
	if (urlObj.query) {
		query = str.parseUrlQuery(urlObj.query);
	}

	// 有个跳转工人详情的二维码
	if (urlObj.path == '/pages/worker/detail' && query?.worker_id) {
		uni.reLaunch({
			url: '/pages/worker/detail?worker_id=' + query?.worker_id,
		});
		return;
	}

	// 处理跳转逻辑
	if (query?.go) {
		go = decodeURIComponent(query.go);
		query = str.parseURL(go)
		// 判断query.path 是不是 tabBar
		let tabBars = ['/pages/index/index'];
		if (tabBars.indexOf(query.path) > -1) {
			uni.switchTab({
				url: go,
			})
		} else {
			uni.reLaunch({
				url: go,
			})
		}
	} else {
		uni.switchTab({
			url: go,
		})
	}
}

// 通过分享进入
function enterByShareMessage(options) {
	// todo 查看参数自行处理
	ref_query = options.query?.go;
	if (options.query?.go) {
		// 只要是通过 下面的onShare 过来的,都是封装的go参数
		uni.reLaunch({
			url: options.query.go,
		})
	}
}

/**
 * 分享的时候调用
 * @see https://developers.weixin.qq.com/minigame/dev/api/share/wx.onShareAppMessage.html
 * @param {object} obj 参数同 wx.onShareAppMessage(),但是会对path做拦截到 pages/share/share 做统一处理
 */
function onShare(obj) {
	obj.path = '/pages/share/share?go=' + encodeURIComponent(obj.path);
	return obj
}
// 注册的时候要的参数
function getRefQuery() {
	return ref_query;
}

export default {
	init,
	onShare,
	getRefQuery,
}